package i2.application.fmw.aspects;

import java.util.Arrays;

import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

@Aspect
public class LogBeforeAfterAspect {

	@Before("execution(* i2.application..*..*())")
//	@Before("@annotation(org.junit.Test)")
	public void logBeforeAfter(JoinPoint pjp) throws Throwable {
		System.out.println("JE SUIS LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLAAAAAAAAAAAAAAAAAAAAAAAAAAa");
		Logger logger = LoggerFactory.getLogger(pjp.getTarget().getClass());
		logger.error(">>> début de la méthode "+pjp.getSignature().getName()+"() de "+pjp.getTarget()+" invoquée avec "+Arrays.toString(pjp.getArgs()));
		logger.error("<<< fin de la méthode "+pjp.getSignature().getName()+"()");
	}
	
//	public Object logBeforeAfter(ProceedingJoinPoint pjp) throws Throwable {
//		Object value = null;
//		System.out.println("JE SUIS LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLAAAAAAAAAAAAAAAAAAAAAAAAAAa");
//		Logger logger = LoggerFactory.getLogger(pjp.getTarget().getClass());
//		logger.error(">>> début de la méthode "+pjp.getSignature().getName()+"() de "+pjp.getTarget()+" invoquée avec "+Arrays.toString(pjp.getArgs()));
//		value = pjp.proceed();
//		logger.error("<<< fin de la méthode "+pjp.getSignature().getName()+"()");
//		return value;
//	}
}